#ifndef PHYSX_PICKING_H
#define PHYSX_PICKING_H

#include <NxVec3.h>
#include <NxActor.h>
#include <NxScene.h>
#include <NxDistanceJoint.h>

class PhysxPicking
{
public:
	static NxActor* grabbedActor;
	static NxActor* mouseCursorActor;
	static NxDistanceJoint* mouseCursorJoint;
	static NxReal mouseDepth;

private:
	static bool WindowToObjectCoords(const int wx, const int wy, const float wz, NxVec3& objectCoords);
	static bool ObjectToWindowCoords(const NxVec3 &objectCoords, int& wx, int& wy, float &wz);

public:
	static NxVec3 GroundIntersection(const int wx, const int wy);
	static NxActor* SelectActor(const int wx, const int wy, const NxScene* scene);
	static bool GrabActor(const int wx, const int wy, NxScene* scene);
	static bool MoveGrabbedActor(const int wx, const int wy);
	static void ReleaseGrabbedActor(NxScene* scene);
};

#endif //PHYSX_PICKING_H